/**
 * @file 标签页创建和转换工具
 * @description 提供标签页对象的创建、转换和ID生成功能
 * @author 黄敏
 * @version 1.0.0
 * @since 2025-08-22
 */
import { SYSTEM_TABS } from '~shared/constants/tab'
import type { SpecialTabId } from '~shared/constants'

// 生成侧栏标签页的ID，用秒级时间戳为基础生成，可以避免重复
let autoSidebarId = Math.round(Date.now() / 1000) * 1000

/**
 * 生成下一个侧栏标签页ID
 * @returns 新的标签页ID
 */
export function generateSidebarTabId(): number {
  return ++autoSidebarId
}

/**
 * 从持久化数据创建 BrowserTab 对象
 * @param persistedTab 持久化数据
 * @returns BrowserTab 对象
 */
export function createBrowserTabFromPersistData(persistedTab: F2.tab.PersistData): F2.tab.Create {
  const systemTab = SYSTEM_TABS[persistedTab.id as SpecialTabId]

  return {
    id: persistedTab.id,
    title: persistedTab.title,
    url: persistedTab.url,
    icon: persistedTab.icon,
    favicon: persistedTab.favicon,
    sidebarConfig: toRaw(persistedTab.sidebarConfig),
    separateConfig: toRaw(persistedTab.separateConfig),
    sidebarUi: systemTab?.sidebarUi,
    isMobile: persistedTab.isMobile,
    isInSeparateWindow: persistedTab.isInSeparateWindow,
    autoOpenOnStartup: persistedTab.autoOpenOnStartup
  }
}

/**
 * 创建原始标签页数据
 * @param tab 标签页数据
 * @returns 原始标签页数据
 */
export function createOriginTab(tab: F2.tab.Create): F2.tab.PersistData {
  return {
    id: tab.id ?? generateSidebarTabId(),
    url: tab.url,
    title: tab.title,
    favicon: tab.favicon,
    icon: tab.icon,
    isMobile: tab.isMobile,
    sidebarConfig: tab.sidebarConfig,
    separateConfig: tab.separateConfig,
    isInSeparateWindow: tab.isInSeparateWindow,
    autoOpenOnStartup: tab.autoOpenOnStartup
  }
}
